#include <stdio.h>
#include <time.h>

// 逐个累加法求和
int sumByAccumulate(int n)
{
    int sum = 0;
    for (int i = 1; i <= n; i++)
    {
        sum += i;
    }
    return sum;
}

// 高斯法求和
int sumByGauss(int n)
{
    return n * (n + 1) / 2;
}

int main()
{
    int n;
    printf("请输入一个正整数 n：");
    scanf("%d", &n);

    clock_t start, end;
    double cpu_time_used;

    // 逐个累加法求解时间和结果
    start = clock();
    int sum1 = sumByAccumulate(n);
    end = clock();
    cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC;

    printf("逐个累加法求和结果：%d\n", sum1);
    printf("逐个累加法求解时间： %f 秒\n", cpu_time_used);

    //高斯法求解时间和结果
    start = clock();
    int sum2 = sumByGauss(n);
    end = clock();
    cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC;

    printf("高斯法求和结果：%d\n", sum2);
    printf("高斯法求解时间： %f 秒\n", cpu_time_used);

    return 0;
}

//当输入的正整数 n=100000000时，
//逐个累加法求和结果：987459712
//逐个累加法求解时间： 0.165000 秒
//高斯法求和结果：987459712
//高斯法求解时间： 0.000000 秒
//可知：高斯法的求解效率是远高于累加法的。
